From 03b8a8a880561fc4389dfd648477905ee6cfbecb Mon Sep 17 00:00:00 2001 From: Olivier Fourdan Date: Wed, 2 Nov 2016 10:08:17 +0100 Subject: [PATCH] gtkstack: reorder size_allocate and move_window Unlike other container widgets, GtkStack would allocate its children prior to moving its windows, which might prevent further valid size allocation signals to be emitted. Re-order the size allocation of child widgets to be performed after moving the GtkStack windows. Thanks to Owen for spotting the real issue here. https://bugzilla.gnome.org/show_bug.cgi?id=767713 --- gtk/gtkstack.c | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/gtk/gtkstack.c b/gtk/gtkstack.c index 7416718184..22a10996ca 100644 --- a/gtk/gtkstack.c +++ b/gtk/gtkstack.c @@ -2226,6 +2226,15 @@ gtk_stack_allocate (GtkCssGadget *gadget, child_allocation.x = 0; child_allocation.y = 0; + if (gtk_widget_get_realized (widget)) + { + gdk_window_move_resize (priv->view_window, + allocation->x, allocation->y, + allocation->width, allocation->height); + gdk_window_move_resize (priv->bin_window, + get_bin_window_x (stack, allocation), get_bin_window_y (stack, allocation), + allocation->width, allocation->height); + } if (priv->last_visible_child) { @@ -2288,17 +2297,6 @@ gtk_stack_allocate (GtkCssGadget *gadget, gtk_widget_size_allocate (priv->visible_child->widget, &child_allocation); } - - if (gtk_widget_get_realized (widget)) - { - gdk_window_move_resize (priv->view_window, - allocation->x, allocation->y, - allocation->width, allocation->height); - gdk_window_move_resize (priv->bin_window, - get_bin_window_x (stack, allocation), get_bin_window_y (stack, allocation), - allocation->width, allocation->height); - } - gtk_container_get_children_clip (GTK_CONTAINER (widget), out_clip); } static void -- 2.30.2